' ai_FunctionCreation.bas
#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG
  LOCAL strDate AS STRING
  LOCAL strNewDate AS STRING
  '
  strDate = "10/08/2025"
  '
  strNewDate = funAddThirtyDaysToMonday(strDate)
  '
  CON.STDOUT "Original Date = " & strDate
  CON.STDOUT "New Date      = " & strNewDate
  '
  PRINT "Press any key to exit"
  WAITKEY$
  '
END FUNCTION

'
FUNCTION funAddThirtyDaysToMonday(BYVAL strInputDate AS STRING) AS STRING
    LOCAL pt AS IPOWERTIME
    LOCAL strResultDate AS STRING
    LOCAL lngDayOfWeek AS LONG
    LOCAL lngInputDay AS LONG
    LOCAL lngInputMonth AS LONG
    LOCAL lngInputYear AS LONG
    LOCAL lngDaysToAdd AS LONG

    ' Create PowerTime object
    pt = CLASS "PowerTime"

    ' Parse the input date (dd/MM/yyyy format)
    lngInputDay = VAL(LEFT$(strInputDate, 2))
    lngInputMonth = VAL(MID$(strInputDate, 4, 2))
    lngInputYear = VAL(RIGHT$(strInputDate, 4))

    ' Set the initial date
    pt.NewDate(lngInputYear, lngInputMonth, lngInputDay)

    ' Add 30 days to the input date
    CALL pt.AddDays(30)

    ' Get the day of the week (0=Sunday, 1=Monday, 2=Tuesday, ..., 6=Saturday)
    lngDayOfWeek = pt.DayOfWeek()

    ' If the date is not a Monday (1), advance to next Monday
    IF lngDayOfWeek <> 1 THEN
        ' Calculate days to add to reach next Monday
        IF lngDayOfWeek = 0 THEN
            ' If Sunday, add 1 day to get to Monday
            lngDaysToAdd = 1
        ELSE
            ' If Tuesday through Saturday, calculate days to next Monday
            lngDaysToAdd = 8 - lngDayOfWeek
        END IF

        ' Add the calculated days to reach Monday
        CALL pt.AddDays(lngDaysToAdd)
    END IF

    ' Get the result date in dd/MM/yyyy format
    strResultDate = pt.DateString

    ' Return the result
    FUNCTION = strResultDate

END FUNCTION